/*
* 产品BOM关系表模块
*/
const express = require('express');
const router = express.Router();
// 引入数据库
const db = require("../../../config/db");
// 引入时间包
const moment = require("moment");
// 引入方法库
const { toCamelCase, toUnderlineCase, verifyToken} = require("../../../config/utils");
// 引入日志
const log = require("../../log");

// 获取产品BOM关系表
router.get("/list", (req, res) => {
    console.log("===========查询获取产品BOM关系表接口============");
    // 获取参数
    let {pageNum, pageSize, itemId} = req.query;
    let sql = `select * from md_product_bom where item_id = '${itemId}'`;
    // 分页查询
    sql += ` limit ${(pageNum - 1) * pageSize}, ${pageSize}`;
    // 查询数据库
    db.query("查询获取产品BOM关系表", sql, (err, result) => {
        if (err) {
            res.send({code: 500, msg: "查询获取产品BOM关系表失败"})   
            return
        }
        // 查询总数
        let sqlCount = `select count(*) as count from md_product_bom where item_id = '${itemId}'`;
        db.query("查询获取产品BOM关系表总数", sqlCount, (err, resultCount) => {
            if (err) {
                res.send({code: 500, msg: "查询获取产品BOM关系表总数失败"})
                return
            }
            if (result.length > 0) {
                 // 变量Json数组key转成下划线第一个大写
                 result = result.map(item => {
                    return toCamelCase(item)
                })
            }
            res.send({code: 200, msg: "查询获取产品BOM关系表成功", rows: result, total: resultCount[0].count})
        })
    })
})

// 新增产品BOM关系表
router.post("/", (req, res) => {
    console.log("===========新增产品BOM关系表接口============");
    // 获取创建者
    let {username} = verifyToken(req.headers.authorization);
    // 获取创建时间
    let createTime = moment().format("YYYY-MM-DD HH:mm:ss");
    // 获取参数
    let {bomItemCode, bomItemId, bomItemName, bomItemSpec, enableFlag, itemId, itemOrProduct, quantity, unitOfMeasure} = req.body;
    // 拼接sql
    let sql = `insert into md_product_bom (bom_item_code, bom_item_id, bom_item_name, bom_item_spec, enable_flag, item_id, 
        item_or_product, quantity, unit_of_measure, create_time, create_by) values (
        '${bomItemCode}', '${bomItemId}', '${bomItemName}', ${bomItemSpec ? "'"+bomItemSpec+"'" : null}, '${enableFlag}', '${itemId}',
        '${itemOrProduct}', '${quantity}', '${unitOfMeasure}', '${createTime}', '${username}'
        )`;
    // 插入数据库
    db.query("新增产品BOM关系表", sql, (err, result) => {
        if (err) {
            res.send({code: 500, msg: "新增产品BOM关系表失败"})
            return
        }
        if(result.affectedRows > 0) {
            res.send({code: 200, msg: "新增产品BOM关系表成功"})
        }else{
            res.send({code: 500, msg: "新增产品BOM关系表失败"})
        }
    })

})

// 查询单个产品BOM关系表
router.get("/:id", (req, res) => {
    console.log("===========查询单个产品BOM关系表接口============");
    // 获取参数
    let {id} = req.params;
    // 拼接sql
    let sql = `select * from md_product_bom where bom_id = '${id}'`;
    // 查询数据库
    db.query("查询单个产品BOM关系表", sql, (err, result) => {
        if (err) {
            res.send({code: 500, msg: "查询单个产品BOM关系表失败"})
            return
        }
        if (result.length > 0) {
            // 变量Json数组key转成下划线第一个大写
            result = result.map(item => {
                return toCamelCase(item)
            })
        }
        res.send({code: 200, msg: "查询单个产品BOM关系表成功", data: result[0]})
    })
})

// 更新产品BOM关系表
router.put("/", (req, res) => {
    console.log("===========更新产品BOM关系表接口============");
    // 获取参数
    let {bomId, quantity, remark} = req.body;
    // 获取修改者
    let {username} = verifyToken(req.headers.authorization);
    // 获取修改时间
    let updateTime = moment().format("YYYY-MM-DD HH:mm:ss");
    // 拼接sql
    let sql = `update md_product_bom set quantity = '${quantity}', update_time = '${updateTime}', update_by = '${username}', remark = '${remark}' 
    where bom_id = '${bomId}'`;
    // 更新数据库
    db.query("更新产品BOM关系表", sql, (err, result) => {
        if (err) {
            res.send({code: 500, msg: "更新产品BOM关系表失败"})
            return
        }
        if(result.affectedRows > 0) {
            res.send({code: 200, msg: "更新产品BOM关系表成功"})
        }else{
            res.send({code: 500, msg: "更新产品BOM关系表失败"})
        }
    })
})

// 删除产品BOM关系表
router.delete("/:id", (req, res) => {
    console.log("===========删除产品BOM关系表接口============");
    // 获取参数
    let {id} = req.params;
    // 拼接sql,删除多条数据
    let sql = `delete from md_product_bom where bom_id in(${id})`;
    // 删除数据库
    db.query("删除产品BOM关系表", sql, (err, result) => {
      if (err) {
            res.send({code: 500, msg: "删除产品BOM关系表失败"})
            return
      }
      if(result.affectedRows > 0) {
          res.send({code: 200, msg: "删除产品BOM关系表成功"})
      }else{
          res.send({code: 500, msg: "删除产品BOM关系表失败"})
      }
    })
})

module.exports = router;